<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
      目标: 把json数据转为js数据
            把js数据转为json数据
    */

    // ================== JSON的本质 ================== 
    //  1. JSON 本质是字符串，字符串里面可以有对象、数组
    //  2. 键名必须使用双引号包裹（不能没有双引号、不能去使用单引号、反引号）
    //  3. 值如果是字符串类型，也必须使用双引号
    //  4. JSON数据里面不能出现 undefined 、函数


    // ================== JS数据，转成JSON字符串 ================== 
    // JS对象
    let obj = { name: 'zs', age: 19 }
    // console.log(obj)
    // console.log(JSON.stringify(obj)) // '{"name":"zs","age":19}'


    // JS数组
    let arr = ['zs', 'ls', 'ww']
    // console.log(JSON.stringify(arr)) // '["zs","ls","ww"]'



    // ================== JSON数据，转成JS对象或数组  ================== 
    // JSON(对象格式)  ==> 转成JS对象
    let jsonStr1 = '{"name":"zs","age":19}'
    console.log(JSON.parse(jsonStr1)) // {name: 'zs', age: 19}


    // JSON(数组格式)  ==> 转成JS数组
    let jsonStr2 = '["zs","ls","ww"]'
    console.log(JSON.parse(jsonStr2))


    // ================== 序列化与反序列化 ==================
    //  序列化:   是js数据 转成 json字符串数据    方法： JSON.stringify()
    //  反序列化: 是json字符串数据 转成 js数据    方法： JSON.parse()


    // 演示错误
    // let jsonStr3 = '{"name":"zs", age:19}' // 该字符串的age属性没有使用双引号，不是json字符串，无法使用parse方法
    // console.log(JSON.parse(jsonStr3))  // error
  </script>
</body>

</html>